home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Texteditors / XDME / Src / Key / KeyAddes.c next >
C/C++ Source or Header  |  1996-09-26  |  3KB  |  138 lines

  1. /******************************************************************************
  2.  
  3.     MODUL
  4.     keyaddes.c
  5.  
  6.     DESCRIPTION
  7.     additional keyboard support commands, which do
  8.     not need keyhashes.c
  9.  
  10.     NOTES
  11.     we only import keycodes.c
  12.  
  13.     BUGS
  14.  
  15.     TODO
  16.     (better) filtering commands
  17.  
  18.     EXAMPLES
  19.  
  20.     SEE ALSO
  21.  
  22.     INDEX
  23.  
  24.     HISTORY
  25.     16 Dec 1992 b_null created
  26.  
  27. ******************************************************************************/
  28.  
  29. /**************************************
  30.         Includes
  31. **************************************/
  32. #define  KEY_INTERNAL            /* PATCH_NULL < 24-06-94 */
  33. #include "defs.h"
  34. extern BOOL a2iqual (const UBYTE *str, ULONG *piqual); /* keycodes.c */
  35.  
  36.  
  37. /**************************************
  38.         Globale Variable
  39. **************************************/
  40. Prototype long ext_qualifiers;
  41. Prototype int  qualifier (char *);
  42.  
  43.  
  44. /**************************************
  45.       Interne Defines & Strukturen
  46. **************************************/
  47.  
  48.  
  49. /**************************************
  50.         Interne Variable
  51. **************************************/
  52. long ext_qualifiers = 0;
  53.  
  54.  
  55. /**************************************
  56.        Interne Prototypes
  57. **************************************/
  58.  
  59.  
  60. /*****************************************************************************
  61.  
  62.     NAME
  63.     qualifier
  64.  
  65.     PARAMETER
  66.     char * string
  67.  
  68.     RESULT
  69.     success
  70.  
  71.     RETURN
  72.     int
  73.  
  74.     DESCRIPTION
  75.     manually set some (additional) qualifiers without
  76.     respect to the keyboard;
  77.     it is possible to set/add/remove/AND/XOR some quals
  78.     due to the 1st char of string
  79.  
  80.     NOTES
  81.     make sure unused qualifiers do not disturb keycontrol.c
  82.  
  83.     BUGS
  84.     using ^ may cause definition of nused qualifiers,
  85.     but that should really not cause errors
  86.  
  87.     EXAMPLES
  88.  
  89.     SEE ALSO
  90.     keycodes.c/a2iqual
  91.  
  92.     INTERNALS
  93.  
  94.     HISTORY
  95.     16 Dec 1992 b_null created
  96.  
  97. ******************************************************************************/
  98.  
  99. int qualifier (char * string)
  100. {
  101.     long newquals = 0;
  102.     char mode      = 0;
  103.  
  104.     if (!string) {
  105.     return (0);
  106.     } /* if */
  107.  
  108.     switch (*string) {
  109.     case '+': mode =  1; string++; break;  /* add some additional quals */
  110.     case '-': mode =  2; string++; break;  /* remove some additional quals */
  111.     case '*': mode =  3; string++; break;  /* AND some additional quals */
  112.     case '/': mode =  4; string++; break;  /* XOR some additional quals */
  113.     default:  mode =  0;       break;  /* overwrite the old quals */
  114.     } /* switch */
  115.  
  116.     if (!a2iqual(string, &newquals)) {
  117.      return (0);
  118.     } /* if */
  119.  
  120.     switch (mode) { /* see above */
  121.     case 0: ext_qualifiers  =  newquals; break;
  122.     case 1: ext_qualifiers |=  newquals; break;
  123.     case 2: ext_qualifiers &= ~newquals; break;
  124.     case 3: ext_qualifiers &=  newquals; break;
  125.     case 4: ext_qualifiers ^=  newquals; break; /* highly dangerous: we may define unused bits */
  126.     } /* switch */
  127.  
  128.     return (1);
  129. } /* qualifier */
  130.  
  131.  
  132.  
  133.  
  134. /******************************************************************************
  135. *****  ENDE keyaddes.c
  136. ******************************************************************************/
  137.  
  138.